1. Field of the Invention
The present invention relates generally to computing devices. More specifically, the present invention relates to hardware acceleration of web applications.
2. Description of the Related Art
A general purpose graphics processing unit (GPU) is a type of processor that has been specifically designed to perform compute intensive and graphics related computations. They can rapidly manipulate and alter memory in such a way so as to accelerate both image and non-image related computations. GPUs are used in embedded systems, mobile phones, personal computers, workstations, and game consoles, among other devices. Modern GPUs are very efficient at manipulating computer graphics and for compute intensive problems, and their highly parallel structure makes them more effective than general-purpose CPUs for algorithms where processing of large blocks of data is done in parallel.
Other high performance processors, such as general purpose multi-core central processing units (CPUs) have also been finding their way into more and more devices. However, the performance and power efficiency of GPUs surpasses general purpose CPUs.
Web applications, such as those commonly run on smart phones and computers operating web browsers, rely on the standard processor on whatever device they are running to execute the processes and computations required by the web applications. As web applications become more and more compute and graphics intensive, consumers are demanding better and better processing times for the applications.
Open Computing Language (OpenCL) is a framework for writing programs that execute across heterogeneous platforms consisting of central processing unit (CPUs), graphics processing unit (GPUs), and other processors and accelerators. Software can then be designed to use OpenCL to facilitate the use of GPUs or multi-core processors to process sections of the software and for parallelization. The problem with this approach, however, is that it is difficult to extend such functionality to a broad scope of web applications. Unlike more traditional software, web applications essentially are two pieces of application software—the application itself, and the web browser that runs the application. While individual web application designers can design their web applications specifically to utilize OpenCL, this utilization would only apply to their own web application, and not to other web applications run by the browser. Requiring individual web application designers, many of whom are smaller companies or even individuals in the smart phone age, to design applications using OpenCL is a significant impediment to its acceptance. Additionally, support for the use of a GPU through a browser, to run a web application helps not only that particular web application, but also other applications running on the computing device, which suddenly will have more processing power available.
As such, what is needed is a solution that allows for a higher level of abstraction on top of parallelization APIs such as OpenCL, that can be utilized by a web browser and apply to any web application that the web browser runs.